package com.sxj.corejava.code14_Lambda表达式;

import java.util.function.Consumer;

public class Test02_消费型接口 {

    public static void main(String[] args) {
        // 匿名内部类用法
        testConsumer(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println("今天天气真好,容易使人犯困,我们去城堡买一杯" + s + "咖啡");
            }
        }, "瑞幸");

        // Lambda表达式用法
        testConsumer(s -> System.out.println("今天天气真好,容易使人犯困,我们去城堡买一杯" + s + "咖啡"), "星巴克");
    }

    /**
     * 消费型接口
     * 当前接口中泛型的类型与实际调用accept方法传递的参数类型是一致的
     * 此时方法的参数是一个函数式接口,接口方法是没有走具体实现的
     * 即:此处并不是真正的实际调用者,该方法会由实际调用者进行具体的视线
     * @param consumer
     * @param param
     */
    public static void testConsumer(Consumer<String> consumer, String param) {
        consumer.accept(param);
    }

}
